﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using BUS;
using DAO;
using DTO;
namespace baitaptuan5
{
    public partial class ThemPhieuNhap : Form
    {
        public ThemPhieuNhap(PhieuNhapDTO pn)
        {
            InitializeComponent();
            pnbus = new PhieuNhapBUS();
            pndto = pn;
            sachbus = new SachBUS();
            sachdto = new SachDTO();
            chitetbus = new ChiTietPhieuBUS();
            chitetdto = new ChiTietPhieuNhapDTO();
            thamsobus = new ThamSoBUS();
            thamsotdo = new ThamSoDTO();
            
            dtThamSo = thamsobus.LayTable();
            dtSach = sachbus.laybang();
            comboBox1.DataSource = dtSach;
            comboBox1.DisplayMember = "TenSach";
            comboBox1.ValueMember = "MaSach";
            khoitao();
            if (pndto.MaPN != 0)
            {
                dateTimePicker1.Text = pndto.NgayNhap.ToString();
                button2.Visible = false;
                dem();
                action = 0;
            }
            else
            {
                dtSach = sachbus.laybang();
                action = 1;
            }
            // dem();
        }
        int r,action,idem,tien;
        ThamSoBUS thamsobus;
        ThamSoDTO thamsotdo;
        PhieuNhapDTO pndto;
        PhieuNhapBUS pnbus;
        SachBUS sachbus;
        SachDTO sachdto;
        ChiTietPhieuNhapDTO chitetdto;
        ChiTietPhieuBUS chitetbus;
        DataTable dtPhieuNhap, dtChiTiet, dtSach,dtThamSo;

        void gandulieu()
        {
            comboBox1.SelectedValue = chitetdto.MaSach;
            numericUpDown1.Value = chitetdto.SoLuongNhap;
        }
        void khoitao()
        {

             foreach (DataRow row in dtThamSo.Rows)
            {
            thamsotdo.SoLuongNhapToiThieu =  int.Parse(row["SoluongNhapToiThieu"].ToString());
            thamsotdo.SoLuongTonQuyDinhNhap = int.Parse(row["SoLuongTonQuyDinhNhap"].ToString());
            thamsotdo.SoLuongTonQuyDinhSauKhiBan = int.Parse(row["SoLuongTonQuyDinhSauKhiBan"].ToString());
            thamsotdo.SoLuongTonQuyDinhTruocKhiBan = int.Parse(row["SoLuongTonQuyDinhTruocKhiBan"].ToString());
            thamsotdo.TienNoCuaKH = int.Parse(row["TienNoCuaKhachHang"].ToString());
            thamsotdo.TienNoQuyDinh = int.Parse(row["TienNoQuyDinh"].ToString());
            thamsotdo.TonToiDa = int.Parse(row["TonToiDa"].ToString());
            thamsotdo.SoLuongTon = int.Parse(row["SoLuongTon"].ToString());
            }   
        }
        void dem()
        {
            dtSach = sachbus.laybang();
            dtChiTiet = chitetbus.LayTableTheoMaPhieu(pndto);
            dataGridView1.DataSource = dtChiTiet;
            tien = 0;
            idem = 0;
            foreach (DataRow row in dtChiTiet.Rows)
            {
                string filterExpression = "";

                filterExpression = "MaSach =" + row["MaSach"].ToString();

                DataRow[] rows = dtSach.Select(filterExpression);
                tien = int.Parse(rows[0].ItemArray[5].ToString()) * int.Parse(row["SoLuongNhap"].ToString());
                idem = idem + tien;
            }
            tongtien.Text = idem.ToString();

        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {

                if (pndto.MaPN == 0)
                {

                }
                else
                {
                    if (rbthem.Checked == true)
                    {
                        int soluong = 0;
                        chitetdto.MaPN = pndto.MaPN;
                        chitetdto.MaSach = int.Parse(comboBox1.SelectedValue.ToString());
                        chitetdto.SoLuongNhap = int.Parse(numericUpDown1.Value.ToString());
                       

                        string filterExpression = "";

                        filterExpression = "MaSach =" + chitetdto.MaSach;

                        DataRow[] rows = dtSach.Select(filterExpression);

                        if (int.Parse(numericUpDown1.Value.ToString()) < thamsotdo.SoLuongNhapToiThieu)
                        {
                            MessageBox.Show("SỐ LƯỢNG SÁCH  NHẬP TỔI THIỂU LÀ :" + thamsotdo.SoLuongNhapToiThieu.ToString(), "THÔNG BÁO");
                            return;
                        }
                        if (int.Parse(rows[0].ItemArray[3].ToString()) >= thamsotdo.SoLuongTonQuyDinhNhap)
                        {
                            MessageBox.Show("SỐ LƯỢNG SÁCH TỒN KHO LỚN HƠN QUY ĐỊNH (" + thamsotdo.SoLuongTonQuyDinhNhap.ToString() + ")\n SỐ LƯỢNG SÁCH CÓ TRONG KHO LÀ :" + int.Parse(rows[0].ItemArray[3].ToString()), "THÔNG BÁO");
                            return;
                        }
                            soluong = int.Parse(rows[0].ItemArray[3].ToString()) + chitetdto.SoLuongNhap;
                            sachbus.suaSL(soluong, chitetdto.MaSach);
                            chitetbus.them(chitetdto);
                            dem();
                    }
                    else
                    {
                        int soluong = 0;
                        // cap nhat  lai sl sach
                        string filterExpression = "";

                        filterExpression = "MaSach =" + chitetdto.MaSach;

                        DataRow[] rows = dtSach.Select(filterExpression);
                        soluong = int.Parse(rows[0].ItemArray[3].ToString()) - chitetdto.SoLuongNhap;
                        soluong = soluong + int.Parse(numericUpDown1.Value.ToString());

                        // cap  nhat  lai chit iet  phieu
                        chitetdto.MaPN = pndto.MaPN;
                        chitetdto.MaSach = int.Parse(comboBox1.SelectedValue.ToString());
                        chitetdto.SoLuongNhap = int.Parse(numericUpDown1.Value.ToString());
                        chitetbus.Sua(chitetdto);

                        sachbus.suaSL(soluong, chitetdto.MaSach);
                        dem();
                    }
                }
            }  

            catch (Exception)
            {
            }
        }


        private void dataGridView1_SelectionChanged_1(object sender, EventArgs e)
        {
            try
            {
                if (pndto.MaPN != 0)
                {
                    r = this.dataGridView1.CurrentCell.RowIndex;
                    chitetdto = new ChiTietPhieuNhapDTO();
                    chitetdto.MaChiTiet = int.Parse(dataGridView1.Rows[r].Cells[0].Value.ToString());
                    chitetdto.MaPN = int.Parse(dataGridView1.Rows[r].Cells[1].Value.ToString());
                    chitetdto.SoLuongNhap = int.Parse(dataGridView1.Rows[r].Cells[3].Value.ToString());
                    chitetdto.MaSach = int.Parse(dataGridView1.Rows[r].Cells[7].Value.ToString());
                    gandulieu();
                }
            }
            catch (Exception)
            {
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                pndto = new PhieuNhapDTO();
                pndto.NgayNhap = dateTimePicker1.Value; 
                pnbus.them(pndto);
                MessageBox.Show("THÊM PHIẾU NHẬP THÀNH CÔNG", "THÔNG BÁO");
                button2.Visible = false;

                dtPhieuNhap = pnbus.LayTableNguoc();
                foreach (DataRow row in dtPhieuNhap.Rows)
                {
                    pndto.MaPN = int.Parse(row["MaPhieuNhap"].ToString());
                    pndto.NgayNhap = DateTime.Parse(row["NgayNhap"].ToString());
                }
                dem();
            }
            catch (Exception)
            {
                MessageBox.Show("THÊM PHIẾU NHẬP THẤT BẠI", "THÔNG BÁO");
            }
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
                try
                {
                    if (dataGridView1.Columns[e.ColumnIndex].GetType().ToString() == "System.Windows.Forms.DataGridViewButtonColumn")
                    {

                             DialogResult result = MessageBox.Show("CÓ THỰC SỰ MUỐN XÓA KHÔNG", "THÔNG BÁO", MessageBoxButtons.YesNo);
                             if (result == DialogResult.Yes)
                             {
                                 chitetbus.Xoa(chitetdto);
                                 MessageBox.Show("ĐÃ XÓA", "THÔNG BÁO");

                                 int soluong = 0;

                                 string filterExpression = "";

                                 DataRow[] rows = dtSach.Select(filterExpression);
                                 soluong = int.Parse(rows[0].ItemArray[3].ToString()) - chitetdto.SoLuongNhap;
                                 sachbus.suaSL(soluong, chitetdto.MaSach);
                                 dem();
                             }
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("XÓA THẤT BẠI", "THÔNG BÁO");
                }
            }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            try
            {
             
                    DialogResult result = MessageBox.Show("CÓ THỰC SỰ MUỐN XÓA KHÔNG", "THÔNG BÁO", MessageBoxButtons.YesNo);
                    if (result == DialogResult.Yes)
                    {
                        chitetbus.Xoa(chitetdto);
                        MessageBox.Show("ĐÃ XÓA", "THÔNG BÁO");

                        int soluong = 0;

                        string filterExpression = "";

                        DataRow[] rows = dtSach.Select(filterExpression);
                        soluong = int.Parse(rows[0].ItemArray[3].ToString()) - chitetdto.SoLuongNhap;
                        sachbus.suaSL(soluong, chitetdto.MaSach);
                        dem();
                    }
                
            }
            catch (Exception)
            {
                MessageBox.Show("XÓA THẤT BẠI", "THÔNG BÁO");
            }
        }
        }

    }

